package com.mallbook.model.mapper;

import com.mallbook.model.pojo.Category;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author 宋明松
 * @Version V1.0.0
 * @Date 2022-06-21
 * 商品类型的数据访问控制层接口
 */
public interface CategoryMapper {
    /**
     * 增加
     *
     * @param category 需要增加的商品类型信息
     */
    void add(Category category);

    /**
     * 删除（物理删除）
     *
     * @param id 需要删除的商品类型ID
     */
    void delete(int id);

    /**
     * 批量删除（物理删除）
     *
     * @param ids 需要删除的商品类型ID的集合
     */
    void deleteMore(List<Integer> ids);

    /**
     * 修改一条信息
     *
     * @param category 需要修改的商品类型的信息
     * @param id       需要修改的商品类型的id
     */
    void update(@Param("category") Category category, @Param("id") Integer id);


    /**
     * 通过序号修改顺序
     *
     * @param sortFlag 修改后的商品类型的序号
     * @param sort     需要修改的商品类型的序号
     */
    void updateSortBySort(@Param("sortFlag") Integer sortFlag, @Param("sort") Integer sort);

    /**
     * 修改多条数据
     *
     * @param ids      需要修改的商品类型的id的集合
     * @param category 需要修改的商品类型的信息
     */
    void updateMore(@Param("list") List<Integer> ids, @Param("category") Category category);

    /**
     * 查询所有商品类型
     *
     * @return
     */
    List<Category> findCategory();

    /**
     * 通过ID查询分类
     *
     * @param id 需要查询的商品类型的id
     * @return
     */
    Category findCategoryById(int id);

    /**
     * 根据类别名称查数量
     *
     * @param categoryName 类别名称
     * @return
     */
    int findCategoryNumByName(String categoryName);

    /**
     * -------------通过条件查询商品类型-------------
     *
     * @param category 需要查询的商品类型的条件信息
     * @return
     */
    List<Category> findCategoryByCondition(Category category);

    /**
     * 查询数据库中类别的最大序号
     *
     * @return
     */
    Integer findCategoryMaxSort();

    /**
     * 根据ID修改序号
     *
     * @param sid
     * @param cid
     */
    void updateSortByID(@Param("sid") int sid,@Param("cid") int cid);
}
